package main

import "fmt"

func main() {
	// append() 为切片追加元素
	s1 := []string{"北京", "上海", "深圳"}
	//s1[3] = "杭州"	// 这样写运行时候直接报错
	fmt.Println(s1)
	// 调用append()函数必须用原来的切片接收返回值
	s1 = append(s1, "广州") // [北京 上海 深圳]
	// 容量翻了一倍,数据的容量是不变的,所以底层是:又换了一个容量2倍的数组来存放,数据再进行拷贝
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d \n", s1, len(s1), cap(s1)) // s1=[北京 上海 深圳 广州] len(s1)=4 cap(s1)=6
	s2 := []string{"武汉", "西安", "郑州"}
	s1 = append(s1, s2...)
	// 容量变成12,又翻了一倍
	fmt.Printf("s1=%v len(s1)=%d cap(s1)=%d \n", s1, len(s1), cap(s1)) // s1=[北京 上海 深圳 广州 武汉 西安 郑州] len(s1)=7 cap(s1)=12


}
